    namespace JGSY.CMS.LowCode.Platform.Infrastructure.Upload
{
    /// <summary>
    /// 文件上传结果
    /// 包含文件上传成功后的详细信息
    /// </summary>
    /// <remarks>
    /// 该类用于封装文件上传操作的结果数据，包括：
    /// - 文件基本信息（ID、名称、大小等）
    /// - 访问路径信息（URL、缩略图URL）
    /// - 元数据信息（MIME类型、上传时间等）
    /// - 扩展属性（自定义元数据）
    /// </remarks>
    public class UploadResult
    {
        /// <summary>
        /// 文件唯一标识符
        /// </summary>
        /// <remarks>
        /// 系统生成的文件唯一ID，用于文件的后续操作和引用
        /// </remarks>
        public string FileId { get; set; } = string.Empty;

        /// <summary>
        /// 存储的文件名
        /// </summary>
        /// <remarks>
        /// 在存储系统中的文件名，通常经过编码或重命名处理
        /// </remarks>
        public string FileName { get; set; } = string.Empty;

        /// <summary>
        /// 原始文件名
        /// </summary>
        /// <remarks>
        /// 用户上传时的原始文件名，保持不变用于显示
        /// </remarks>
        public string OriginalFileName { get; set; } = string.Empty;

        /// <summary>
        /// 文件大小（字节）
        /// </summary>
        public long FileSize { get; set; }

        /// <summary>
        /// 文件内容类型
        /// </summary>
        /// <remarks>
        /// MIME类型，如 "image/jpeg", "application/pdf" 等
        /// </remarks>
        public string ContentType { get; set; } = string.Empty;

        /// <summary>
        /// 文件访问URL
        /// </summary>
        /// <remarks>
        /// 文件的完整访问地址，可直接用于下载或预览
        /// </remarks>
        public string Url { get; set; } = string.Empty;

        /// <summary>
        /// 缩略图URL
        /// </summary>
        /// <remarks>
        /// 图片文件的缩略图地址，非图片文件时为null
        /// </remarks>
        public string? ThumbnailUrl { get; set; }

        /// <summary>
        /// 文件元数据
        /// </summary>
        /// <remarks>
        /// 存储文件的扩展信息，如图片尺寸、拍摄信息等
        /// </remarks>
        public Dictionary<string, object> Metadata { get; set; } = new();

        /// <summary>
        /// 上传时间
        /// </summary>
        public DateTime UploadedAt { get; set; }
    }
}